LINQ to NHibernate এর ব্যবহার এবং কনফিগারেশন

LINQ এবং NHibernate Integration - এন হাইবারনেট (NHibernate) - Microsoft Technologies

280

LINQ to NHibernate একটি শক্তিশালী ফিচার যা NHibernate ORM-এর সাথে LINQ কুয়েরি করার সুবিধা প্রদান করে। এটি আপনাকে C# ভাষায় লিখিত LINQ কুয়েরি ব্যবহার করে ডেটাবেসে তথ্য অনুসন্ধান করতে সহায়তা করে, যা SQL কুয়েরি লেখার তুলনায় অনেক সহজ এবং টাইপ-সেফ। LINQ to NHibernate আপনাকে SQL-এর মতো কুয়েরি না লিখে, C# কোডের মধ্যেই ডেটাবেস থেকে তথ্য খুঁজে পাওয়ার সুবিধা দেয়।


LINQ to NHibernate কনফিগারেশন

LINQ to NHibernate ব্যবহারের জন্য, আপনাকে NHibernate.Linq প্যাকেজটি ইনস্টল করতে হবে। এটি NHibernate এর LINQ কুয়েরি এক্সটেনশন প্রদান করে।

NuGet প্যাকেজ ইনস্টল

Install-Package NHibernate.Linq

এই প্যাকেজ ইনস্টল করার পর, আপনি NHibernate.Linq নামের namespace ব্যবহার করতে পারবেন, যা LINQ কুয়েরি তৈরি করার জন্য প্রয়োজনীয় ক্লাস এবং এক্সটেনশন প্রদান করে।


LINQ to NHibernate এর কনফিগারেশন

LINQ to NHibernate কাজ করতে শুরু করার জন্য, প্রথমে আপনাকে সঠিক NHibernate কনফিগারেশন করতে হবে। এই কনফিগারেশনের মাধ্যমে আপনি আপনার ডেটাবেস কনফিগারেশন, ম্যাপিং এবং সেশন ফ্যাক্টরি সেটআপ করবেন।

NHibernate কনফিগারেশন এবং SessionFactory তৈরি করা

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Linq;
using System;

public class NHibernateHelper
{
    private static ISessionFactory sessionFactory;

    public static ISessionFactory SessionFactory
    {
        get
        {
            if (sessionFactory == null)
            {
                sessionFactory = Fluently.Configure()
                    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.Is("Server=yourserver;Database=yourdb;Integrated Security=True;")))
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
                    .BuildSessionFactory();
            }
            return sessionFactory;
        }
    }
}

এখানে:

  • Fluently.Configure(): NHibernate কনফিগারেশন শুরু করা হয়।
  • MsSqlConfiguration.MsSql2008.ConnectionString(...): SQL Server 2008 এর জন্য ডেটাবেস কনফিগারেশন।
  • FluentMappings.AddFromAssemblyOf(): NHibernate ম্যাপিংগুলো অ্যাসেম্বলি থেকে অটোমেটিকভাবে যোগ করা হচ্ছে।

এটি আপনার SessionFactory তৈরি করবে যা LINQ কুয়েরি এবং ডেটাবেস অপারেশন পরিচালনা করবে।


LINQ কুয়েরি ব্যবহার করে ডেটা খোঁজা

এখন আপনি LINQ কুয়েরি ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রাইভ করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Employee ক্লাসের মাধ্যমে LINQ কুয়েরি করা হচ্ছে।

Employee ক্লাস:

public class Employee
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}

LINQ কুয়েরি উদাহরণ:

using NHibernate;
using NHibernate.Linq;
using System;
using System.Linq;

public class EmployeeService
{
    private readonly ISession session;

    public EmployeeService(ISession session)
    {
        this.session = session;
    }

    public void GetEmployeesAbove30()
    {
        // LINQ কুয়েরি ব্যবহার করে কর্মচারীদের তালিকা ফিল্টার করা
        var employees = session.Query<Employee>()
                               .Where(e => e.Age > 30)
                               .OrderBy(e => e.Name)
                               .ToList();

        // ফলাফল প্রিন্ট করা
        foreach (var employee in employees)
        {
            Console.WriteLine($"Id: {employee.Id}, Name: {employee.Name}, Age: {employee.Age}");
        }
    }
}

এখানে:

  • session.Query(): এটি Employee টেবিল থেকে ডেটা কুয়েরি করার জন্য সেশন তৈরি করে।
  • Where(e => e.Age > 30): এটি Age এর ভিত্তিতে কর্মচারী ফিল্টার করে, যেখানে বয়স ৩০ এর বেশি।
  • OrderBy(e => e.Name): এটি কর্মচারীদের নাম অনুসারে সাজায়।
  • ToList(): কুয়েরি রেজাল্টকে একটি তালিকায় রূপান্তর করে।

এই কুয়েরি রান করলে, এটি সমস্ত কর্মচারীর তথ্য প্রিন্ট করবে যাদের বয়স ৩০ এর উপরে।


JOIN কুয়েরি উদাহরণ

LINQ to NHibernate এ JOIN কুয়েরি করার মাধ্যমে একাধিক টেবিলের সম্পর্কযুক্ত ডেটা একত্রে পাওয়া যায়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Employee এবং Department টেবিলের মধ্যে INNER JOIN করা হয়েছে।

Department ক্লাস:

public class Department
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

LINQ JOIN কুয়েরি উদাহরণ:

public void GetEmployeesWithDepartment()
{
    var employeesWithDepartments = session.Query<Employee>()
                                          .Join(session.Query<Department>(),
                                                emp => emp.Department,
                                                dept => dept.Name,
                                                (emp, dept) => new
                                                {
                                                    EmployeeName = emp.Name,
                                                    DepartmentName = dept.Name
                                                })
                                          .ToList();

    foreach (var employee in employeesWithDepartments)
    {
        Console.WriteLine($"Employee: {employee.EmployeeName}, Department: {employee.DepartmentName}");
    }
}

এখানে:

  • Join: এটি Employee এবং Department টেবিলের মধ্যে INNER JOIN তৈরি করে, যেখানে Department এর নামের সাথে Employee এর বিভাগের নাম ম্যাচ করে।
  • (emp, dept) => new {...}: এটি দুটি টেবিলের তথ্য একত্রিত করে একটি নতুন অবজেক্ট তৈরি করে যাতে কর্মচারী এবং বিভাগের নাম সহ আউটপুট দেওয়া যায়।

LINQ to NHibernate এর সুবিধা

  • টাইপ সেফটি: LINQ কুয়েরি টাইপ সেফ, যার ফলে কম্পাইল টাইমে ভুলের সম্ভাবনা কমে।
  • সহজ সিনট্যাক্স: LINQ-এর সহজ ও পরিষ্কার সিনট্যাক্স ডেটাবেস কুয়েরি লেখাকে সহজ করে তোলে।
  • ডায়নামিক কুয়েরি: ডেটাবেস কুয়েরি কোডের মধ্যে সহজেই পরিবর্তন এবং এক্সটেন্ড করা যায়।

LINQ to NHibernate এর মাধ্যমে ডেটাবেস কুয়েরি লেখার প্রক্রিয়া অনেক বেশি ক্লিন এবং সহজ হয়ে যায়।

Content added By
Promotion

Are you sure to start over?

Loading...